//: Playground - noun: a place where people can play

import Cocoa

// MARK: 可变参数

func sum(input: Int...) -> Int {
    return input.reduce(0, +)
}

//print(sum(input: 1, 2, 3, 4, 5))

func myFunc(numbers: Int..., string: String) {
    numbers.forEach { (times: Int) in
        for i in 0..<times {
            print("\(i + 1): \(string)")
        }
    }
}

//myFunc(numbers: 1, 2, 3, string: "Hello")


// MARK: 初始化方法
// Swift初始化方法要求类型中的所有属性都被初始化。在子类中，我们需要保证当前子类实例的成员初始化完成后才能调用父类的初始化方法

class Cat {
    var name: String
    init() {
        name = "cat"
    }
}

class Tiger: Cat {
    let power: Int
    
    override init() {
        power = 10
//        super.init()
//        name = "tiger"
        // 如果我们不需要改变name的话
        // 虽然我们没有显式地对super.init() 进行调用
        // 不过由于是初始化的最后了，Swift 会自动隐式地调用
    }
    
}



